#include "mainwindow.h"
#include <QApplication>
#include "database_home.h"
#include <QSplashScreen>
#include <QThread>
#include <QProgressBar>
#include <QSettings>
#include <QSharedMemory>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//对于基于Widget的GUI程序的 唯一应用程序实例

    // 创建共享内存段
    QSharedMemory sharedMemory("FireMaterialDatabaseUniqueKey");
    if (!sharedMemory.create(1)) { // 尝试创建1字节的共享内存
        // 如果创建失败，说明已经有一个实例在运行
        QMessageBox::warning(nullptr, "警告",
                             "程序已经在运行中！\n"
                             "同一时间只能运行一个实例。");
        return 1; // 退出程序
    }

    // 确保程序退出时释放共享内存
    sharedMemory.setKey("FireMaterialDatabaseUniqueKey");

    // 全局设置 INI 文件编码为 UTF-8
    QSettings::setDefaultFormat(QSettings::IniFormat);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

    QSplashScreen* splash = new QSplashScreen();

    QPixmap pixmap(":/images/logo1.png");
    pixmap = pixmap.scaled(800, 600, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 保持比例，平滑缩放
    splash->setPixmap(pixmap);

    splash->show();

    splash->showMessage(QObject::tr("load..."), Qt::AlignBottom | Qt::AlignHCenter, QColor(255, 255, 255));

//    QDateTime time = QDateTime::currentDateTime();
//    QDateTime currentTime = QDateTime::currentDateTime(); //记录当前时间
//    int i = 0;
//    while (time.secsTo(currentTime) <= 2)
//    {
//        a.processEvents();
//        splash->showMessage(QObject::tr("load.  "), Qt::AlignBottom | Qt::AlignHCenter, Qt::red);
//        QThread::msleep(200);
//        splash->showMessage(QObject::tr("load.. "), Qt::AlignBottom | Qt::AlignHCenter, Qt::red);
//        QThread::msleep(200);
//        splash->showMessage(QObject::tr("load..."), Qt::AlignBottom | Qt::AlignHCenter, Qt::red);
//        QThread::msleep(200);
//        currentTime = QDateTime::currentDateTime();

//    };

    // 添加进度条
    QProgressBar progressBar(splash);
    progressBar.setGeometry(splash->width() / 4, splash->height() - 50, splash->width() / 2, 20);
    progressBar.setStyleSheet("QProgressBar {background: transparent; color: white;}"
                              "QProgressBar::chunk {background: lightblue;}");
    progressBar.setMaximum(100);
    progressBar.setValue(0);
    progressBar.show();

    for (int i = 0; i <= 100; ++i) {
        progressBar.setValue(i);
        QThread::msleep(20);
        a.processEvents();
    }


    database_home dw;
    dw.setWindowTitle("森林-城镇交界域典型建筑材料的引燃和燃烧危险性数据库");
    dw.show();

    splash->finish(&dw);
//    login my_login;//登陆界面
//    if (my_login.exec() == QDialog::Accepted)
//    {
//        MainWindow w;//主界面
//        w.setWindowTitle("消防材料引燃特性数据库");
//        w.show();
//        return a.exec();
//    }
//    else return 0;
    return a.exec();
}
